<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <!--
        1.js的数据类型有哪些?
            数字number 字符串string  布尔值boolean  空null  未定义underfined
            数组array  对象object
        2.数组的常用方法并解释用处
            增删改查 [1,2,3,4]
            push 在最后添加
            pop 在最后删除
            shift 在前面删除
            unshift在前面添加
            splice 在中间删除并添加
            foreach 循环
            indexof 查询元素第一次出现的位置
            sort 排序
            reverse 反转
            join转换成字符串
            tostring转换成字符串
        3.字符串的常用方法并解释用处
            indexof 查询元素第一次出现的位置
            lastindexof 查询元素最后一次出现的位置
            chart 获取指定位置的字符
        4.生成一个时间对象,并获取这个中的月份
        var date = new Date("2017-6-25");
        var m = date.getMonth() + 1;
        5.获取十个10-50之间的随机数
        for (var i = 0; i<10; i++) {
            var n = Math.random() * 41;
            var n = Math.floor(n) //0-40
            var k = m+10; //10-5
            }
        6.事件的添加方法有哪些?(6分)
            在开始标签内(即html内)直接通过html的事件属性添加事件
            <div onclick="fun()"></div>  //fun是全局函数

            在js中获取标签对象 给标签对象添加事件
            标签对象.onclick = function(){}

            通过事件监听添加事件
            标签对象.addEventListener("事件",函数)

        7.解释事件的传播机制,如何阻止事件的传播(6分)    
            在事件被触发的时候,会先由外向内从html开始一层一层找到当前被点击的标签,
            再从当前点击的标签由内向外一层一层的找到html;
            这个由外向内的过程叫捕获阶段
            再由内向外的过程叫冒泡阶段 默认事件是在冒泡阶段执行的

            事件对象event.stopPropagation();

        8.this的指向(分别在什么情况下指向谁)(6分)
            全局函数中this指向window
            事件函数中this指触发事件的标签对象
            构造函数中this指当前创建的实例对象

        9.dom获取标签(6分)

            
        10.写出下面代码的运行结果(6分)
        function Fun(){
            console.log(this); // 1.{}
            this.name = "lili";
            var age = 18;
            this.test = function(){
                console.log(this.age); //3.undefined

                console.log(age); //4.undefined
                var age = 20;
            }
        }
        var f = new Fun();
        console.log(f); //2.{name:"lili",test:function}
        console.log(f.test());//输出函数的返回值  5.undefined

        11.写出 
        console.log(10 > 5 && 12 == "12"); //true
        console.log(12 + "12" || 10 > 100);  //"1212"
        console.log(undefined || null);  //null
        console.log(100 - 120 || 10 - 10); //-20
        console.log(10 - 10 && 100 - 120);  //0
        的输出结果;(5分)

        12. 写出下面代码的运行结果(5分)
        var m = 10;
        for(var i = 0,j = 10;i < 10,j > 5;i++,j--){
            m+=i+j
        }
        console.log(m); //60
        
        
        13.用函数封装一个数组的unshift方法(10分) 
        14.用函数封装一个字符串的substr方法(10分) 
        15.用函数封装一个数组的join方法(10分)
     -->
    <script>
        var arr = new Array();
        console.log(arr); //Array:[]

        var obj = new Object();
        console.log(obj); //Object:{}

        function Fun() {
            console.log(this); //Fun{}
            this.bingqilin1 = "red";
        }
        var f = new Fun();
        console.log(f); //Fun:{bingqilin1:"red"}    

        console.log("-------------");
        var k = new Fun();
        console.log(k);

    </script>






</body>

</html>